//
//  CNSQLiteManager.swift
//  Ccweibo
//
//  Created by 陈锦聪 on 16/4/8.
//  Copyright © 2016年 Coco. All rights reserved.
//

import UIKit
import FMDB
/*
FMDatabase: 一个FMDatabase表示一个数据库连接,所有对数据库的操作都依赖它
    1.executeStatements: 可以执行多条sql语句
    2.executeQuery: 执行查询
    3.executeUpdate: 在FMDB中除了查询以外的操作都是Update

FMDatabaseQueue: 内部包含FMDatabase和一个串行队列,可以异步执行sql
    1.inDatabase: 执行sql语句,不带事务
    2.inTransaction: 执行sql语句,带事务

FMResultSet:查询的结果保存在这里
*/

class CNSQLiteManager: NSObject {
    
    static let sharedManager = CNSQLiteManager()
    let dbQueue: FMDatabaseQueue
    
    private override init() {
        let dbPath = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true).last?.stringByAppendingString("/status.db")
        CNPrint(item: "dbPath: \(dbPath)")
        dbQueue = FMDatabaseQueue(path: dbPath)
        super.init()
        createTable()
    }
    private func createTable() {
        let sql = "CREATE TABLE IF NOT EXISTS T_Status (statusId INTEGER NOT NULL PRIMARY KEY, status TEXT, userId INTEGER, createTime TEXT DEFAULT (datetime('now', 'localtime')))"
        dbQueue.inDatabase { (db) -> Void in
            do {
                try db.executeUpdate(sql, values: [])
                CNPrint(item: "创建表成功")
            } catch {
                CNPrint(item: "创建表失败")
            }
        }
    }
    
}
